package smallfrench.moteur.lexer;

/**
 * Classe immuable représentant une position dans un fichier (ligne,
 * colonne, ...).
 * Doit rester légère, peut être instanciée un grand nombre de fois.
 * 
 * @author antoine1023
 */
public final class Position {

	/**
	 * Le numéro de la ligne du fichier.
	 */
	public final int ligne;

	/**
	 * Le numéro de colonne de la ligne.
	 */
	public final int colonne;

	/**
	 * La position, l’index depuis le début du fichier.
	 */
	public final int index;

	/**
	 * 
	 * @param ligne
	 * @param colonne
	 * @param index La position, l’index depuis le début du fichier.
	 */
	public Position(int ligne, int colonne, int index) {
		this.ligne = ligne;
		this.colonne = colonne;
		this.index = index;
	}

	/**
	 * @return Une chaîne de la forme :<br>
	 * <code>(ligne : [ligne] ; colonne : [colonne] ; index : [index])
	 * </code>
	 */
	@Override
	public String toString() {
		return "(ligne : " + ligne
				+ " ; colonne : " + colonne
				+ " ; index : " + index + ")";
	}

}
